package persistance.dal;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import ucc.objects.FonctionDTO;
import biz.BizFactory;

public class FonctionFinderImpl implements FonctionFinder {

	private PreparedStatement q1;
	private PreparedStatement q2;
	private final String Q1 = "select * from caisse.fonctions where id_fonction=?";
	private final String Q2 = "select * from caisse.fonctions";

	public FonctionFinderImpl() {
		this.q1 = DalBackEndServices.INSTANCE.prepare(Q1);
		this.q2 = DalBackEndServices.INSTANCE.prepare(Q2);
	}

	public FonctionDTO laFonctionNum(int id) {
		ResultSet rs = null;
		try {
			q1.setInt(1, id);
			rs = q1.executeQuery();
			FonctionDTO fonction = BizFactory.INSTANCE.createEmptyFonctionDTO();
			while (rs.next()) {
				fonction.setId(id);
				fonction.setDesignation(rs.getString("designation"));
				fonction.setDroits(rs.getInt("droits"));
				fonction.setAdministrateur(rs.getBoolean("administrateur"));
				fonction.setSuperadministrateur(rs
						.getBoolean("superadministrateur"));
			}
			return fonction;
		} catch (SQLException e) {
			System.out.println("[E][SQL] : ");
			e.printStackTrace();
		}
		return null;
	}

	public ArrayList<FonctionDTO> lesFonctions() {
		ResultSet rs = null;
		ArrayList<FonctionDTO> listeFonction = new ArrayList<FonctionDTO>();
		try {
			rs = q2.executeQuery();
			while (rs.next()) {
				FonctionDTO fonction = BizFactory.INSTANCE
						.createEmptyFonctionDTO();

				fonction.setId(rs.getInt("id_fonction"));
				fonction.setDesignation(rs.getString("designation"));
				fonction.setDroits(rs.getInt("droits"));
				fonction.setAdministrateur(rs.getBoolean("administrateur"));
				fonction.setSuperadministrateur(rs
						.getBoolean("superadministrateur"));

				listeFonction.add(fonction);
			}
			return listeFonction;
		} catch (SQLException e) {
			System.out.println("[E][SQL] : ");
			e.printStackTrace();
		}
		return null;
	}
}
